import xlrd
# xlrd库：读取excel文件，支持xls和xlsx格式，xlrd从2.0.0版本开始不再支持.xlsx文件（最新版好像不支持xlsx，解决方法可自行搜索）。
# xlwt库：写入excel文件，只支持xls格式。

# xlrd 库使用：
# 使用xlrd库读取excel文件并操作数据
# xlrd库的基本用法
# 打开读取xls文件，返回一个只读的xlrd.Book对象，xlrd只能读Excel内容，不能向Excel写入数据
# workbook = xlrd.open_workbook(file.xls)
# 获取xls中工作表数量
# workbook.nsheets
# 对工作表的操作
# table = data.sheets()[index] #直接指定列表索引获取工作表
# table = data.sheet_by_index(sheet_index)) #通过索引顺序获取
# table = data.sheet_by_name(sheet_name)#通过名称获取
# 以上三个函数都会返回一个xlrd.sheet.Sheet()对象
# names = data.sheet_names() #返回excel文件中所有工作表的名字列表
# data.sheet_loaded(sheet_name or indx) # 检查某个sheet是否导入完毕
# 对行(row)的操作
# row_length = table.nrows #利用表属性获取行长度，即获取总行数
# table.row_len(rowx) #通过row_len()方法获取行长度
# table.row(rowx) #返回该行的对象数据列表
# table.row_slice(rowx) #返回该行的对象数据列表
# table.row_types(rowx, start_colx=0, end_colx=None) #返回该行的类型数据列表
# table.row_values(rowx, start_colx=0, end_colx=None) #返回该行的值数据列表
# 对列(colnum)的操作
# col_length = table.ncols #利用表属性获取列长度，即获取总列数
# table.col_len(colx) #通过col_len()方法获取列长度
# table.col(colx) #返回该列的对象数据列表
# table.col_slice(colx) #返回该列的对象数据列表
# table.col_types(colx, start_rowx=0, end_rowx=None) #返回该列的类型数据列表
# table.col_values(colx, start_rowx=0, end_rowx=None) #返回该列的值数据列表
# 对单元格的操作
# table.cell(rowx, colx) #返回该单元格的数据类型及数值
# table.cell(rowx,colx).value #返回该单元格的数值
# table.cell(rowx,colx).ctype #返回该单元格的数据类型（0: 空，1: Unicode字符串，2: 数值，3: 日期，4: 布尔，5: 出错代码，6: 空）
# table.cell_value(rowx,colx) #返回该单元格的数值
# table.cell_type(rowx,colx) #返回该单元格的数据类型
# 如果 Excel 单元格包含日期或日期时间，xlrd 会将其读取为浮点数（天数从 1900 年 1 月 0 日开始计算）。你可以使用 xldate_as_tuple 函数将其转换为 Python 的日期时间对象



# 打开example.xls文件
excelFile = xlrd.open_workbook("example.xls")
print("工作表数量:", excelFile.nsheets)
print("工作表名称:", excelFile.sheet_names())


# 通过索引获取第一个工作表
table1 = excelFile.sheet_by_index(0)
# 第一行所有的值
row_values = table1.row_values(0)
print("第一行所有值:", row_values)
# 第一列所有的值
col_values = table1.col_values(0)
print("第一列所有值:", col_values)
# 获取第一行第一列的数据类型
cell_type = table1.cell_type(0, 0)
print("第一行第一列的数据类型:", cell_type)
# 获取第一个工作表的行数
rows1 = table1.nrows
# 遍历第一个工作表的每一行
for i in range(rows1):
    # 获取每一行的每一列的数据
    name = table1.cell_value(i, 0)
    sex = table1.cell_value(i, 1)
    age = table1.cell_value(i, 2)
    dateTime = table1.cell_value(i, 3)
    # 打印每一行的数据
    print(name, sex, age, dateTime)

# 通过名称获取第二个工作表
table2 = excelFile.sheet_by_name("Sheet1")
# 获取第二个工作表的行数
rows2 = table2.nrows
# 遍历第二个工作表的每一行
for i in range(rows2):
    # 获取每一行的每一列的数据
    name = table2.cell_value(i, 0)
    sex = table2.cell_value(i, 1)
    age = table2.cell_value(i, 2)
    dateTime = table1.cell_value(i, 3)
    # 打印每一行的数据
    print(name, sex, age, dateTime)
